LangChain 优化技巧 3
检测并破解
Doom Loop
当 Agent 陷入
死循环
,如何
自动干预
?
死循环
实时监控
阈值警报
方案重审
(⚆_⚆) 检测到死循环,准备破解!
什么是
Doom Loop
?
死循环
小修小补
方向错误
重复操作
耗费Token
重复次数:
0
Agent 决定了某个方案后
不断小修小补
哪怕方向是错的
也会
执着地继续
不会重新思考
方案的合理性
最终:
浪费大量 Token
,任务无法完成
(;´Д`) 这样下去钱包要空了...
解决方案:
LoopDetectionMiddleware
循环检测中间件 — 通过工具调用钩子实时追踪
Agent 执行操作
LoopDetectionMiddleware
核心
追踪编辑次数 / 重复操作
超过阈值 → 注入提醒
1
通过
工具调用钩子
拦截操作
2
追踪每个文件的
编辑次数
3
追踪同一操作的
重复执行次数
4
超过阈值 → 向上下文
追加提醒
# LoopDetectionMiddleware 核心逻辑
class
LoopDetection
:
def
on_tool_call
(
self
, call):
self
.counts[call.file] +=
1
if
self
.counts[call.file] >
THRESHOLD
:
inject_warning
(
"重审方案"
)
(。◕‿◕。) 中间件守护,循环无处藏~
超过阈值时的
自动干预
重复次数
"考虑重新审视你的方案。"
无检测
$2.40
有检测
$0.60
节省 75%
打破固有思路,
重新规划
避免无效循环,
节省 Token
提高任务
完成率
٩(ˊᗜˋ*)و 省钱又高效,太棒了!
用
中间件
打破
Doom Loop
监控重复 → 超过阈值 →
自动提醒重审
让 Agent 学会在错误中及时刹车
Agent 执行
重复操作
中间件检测
超阈值提醒
重审方案
(๑•̀ㅂ•́)و✧ 智能监控,让Agent更聪明!